<?php

namespace app\admin\model;

use think\Db;
use think\Model;

/*
 * 验证码
 */

class Code extends Model
{
    //验证码类型
    const TYPE_1 = 1; //找回密码
    const TYPE_2 = 2; //修改提现信息
    const TYPE_3 = 3; //忘记提现密码
    const TYPE_4 = 4; //我要开店注册店铺账号
    const TYPE_5 = 5; //我要开店查询审核进度
    const TYPE_21 = 21; //我要开店查询审核进度

    //验证码状态
    const STATUS_1 = 1; //未使用
    const STATUS_2 = 2; //已使用

    //验证码每天允许发送次数
    const DAY_TIMES = 10;


    /*
     * 验证短信是否发送频繁
     */
    public static function canSendCode($telephone, $type)
    {
        //验证手机号当天发送次数
        $start = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
        $end = mktime(23, 59, 59, date('m'), date('d'), date('Y'));

        $count = Db::name('code')
            ->where('type', '=', $type)
            ->where('telephone', '=', $telephone)
            ->where('add_time', '>=', $start)
            ->where('add_time', '<=', $end)
            ->order('add_time desc')
            ->count();

        if ($count >= Code::DAY_TIMES) {
            return false;
        } else {
            return true;
        }
    }
    
    /*
     * 生成验证码
     * 15分钟内发送同一条
     */
    public static function makerCode($telephone, $type)
    {

        $coderow = Db::name('code')
            ->where('type', '=', $type)
            ->where('telephone', '=', $telephone)
            ->order('add_time desc')
            ->find();
        if($coderow){
            $ctime=time()-strtotime($coderow['add_time']);
            if($ctime>900){//过了15分钟
                $code = mt_rand(1000, 9999);
            }elseif ($ctime<900 && $coderow['status']==1) {//没过15分钟且没有使用
                $code=$coderow['code'];
            }else {
                $code = mt_rand(1000, 9999);
            }
        }  else {
            $code = mt_rand(1000, 9999);
        }
        return $code;
    }

}